<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台（PHP版）
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码，建议反馈是我们前进的动力
// | 开源版本可自由商用，可去除界面版权logo
// | gitee下载：https://gitee.com/likeshop_gitee/likeadmin
// | github下载：https://github.com/likeshop-github/likeadmin
// | 访问官网：https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------

namespace app\common\model;


use app\common\model\BaseModel;
use app\common\model\user\User;

/**
 * 报修单
 * @property $id   id
 * @property $user_id   用户
 * @property $insurance_policy_id   保单ID
 * @property $imei   串号
 * @property $spec   手机型号
 * @property $brand   品牌
 * @property $status   状态（0寄送  10待收货 15 维修中  16 拒绝维修 20 已完成）
 * @property $product_type_id   产品类型
 * @property $create_time   报修时间
 * @property $update_time   修改时间
 * @property $delete_time   删除时间
 * @property $order_no   报修单号
 * @property $finish_repari_time   完成维修时间
 * @property $imgs   报修图片
 * @property $remark   报修说明
 * @property $express_no   发出快递单后
 * @property $express_type   快递公司
 * @property $receive_express_no   回寄单号
 * @property $receive_address   回寄地址
 * @property $receive_concate_name   回寄联系人
 * @property $receive_concate_phone   回寄电话
 * @property $pay_sn   支付编号-冗余字段，针对微信同一主体不同客户端支付需用不同订单号预留。
 * @property $pay_way   支付方式 2-微信支付 3-支付宝支付
 * @property $pay_status   支付状态：0-待支付；1-已支付
 * @property $pay_time   支付时间
 * @property $transaction_id   第三方平台交易流水号
 * @property $order_amount   支付金额
 * @property $check_remark   审核备注
 * @property $check_img   审核图片
 * @property $refund_no   退款订单号
 * @property $check_img_arr   
 * @property $imgs_arr   
 * @property $status_desc   
 * @property User   $user   
 * @property InsurancePolicy   $insurance   
*/

class Repair extends BaseModel
{


    const STATUS_SEND = 0;
    const STATUS_WAIT_RECEIVE = 10;
    const STATUS_REPAIRING = 15;
    const STATUS_FINISH = 20;

    const STATUS_REFUND = -10;


    protected $append = [
        'status_desc',
        'imgs_arr',
        'check_img_arr'
    ];

    public function getCheckImgArrAttr($value, $data)
    {
        return !empty($data['check_img']) ? json_decode($data['check_img'], true) : [];
    }

    public function getImgsArrAttr($value, $data)
    {
        return !empty($data['imgs']) ? json_decode($data['imgs'], true) : [];
    }

    public function getStatusDescAttr($value, $data)
    {
        $status = $data['status'] ?? null;
        // 根据状态值返回对应的描述
        return match ($status) {
            self::STATUS_SEND => '寄送',
            self::STATUS_WAIT_RECEIVE => '待收货',
            self::STATUS_REPAIRING => '维修中',
            self::STATUS_FINISH => '已完成',
            self::STATUS_REFUND => '已退款',
            default => '未知',
        };
    }


    protected $name = 'repair';


    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function insurance()
    {
        return $this->belongsTo(InsurancePolicy::class, 'insurance_policy_id');
    }

}